//
//  LREmoticon.swift
//  表情键盘
//
//  Created by 雷路荣 on 15/12/28.
//  Copyright © 2015年 leilurong. All rights reserved.
//

import UIKit
/**
 *  表情模型
 */
class LREmoticon: NSObject {
    ///表情包文件名称
    var id: String?
    ///表情名称，用于网络传输
    var chs: String?
    ///表情图片名称
    var png: String? {
        didSet{
            // 当kvc设置png时,来拼接完整地图片路径
            // 完整地图片路径 = bundlePath + id + 图片名称  注意加 ！拆包不然路径含有@optional
            pngPath = LREmoticonPackge.bundlePath + "/\(id!)" + "/\(png!)"
            //print("pngPath = \(pngPath)")
        }
    }
    /// 自定义表情图片的完整路径
    var pngPath: String?
    /// code用于显示emoji表情
    var code: String? {
        didSet{
            // kvc设置code之后,将code转成emoji表情
            // 创建扫描器
            let scanner = NSScanner(string: code!)
            // 扫描  result: UnsafeMutablePointer<UInt32>: 需要一个 UInt32类型的可变指针
            var result: UInt32 = 0
            scanner.scanHexInt(&result)
            //转成字符串
            let scalar = UnicodeScalar(result)
            let c = Character(scalar)
            emoji = String(c)
        }
    }
    /// 自定义emoji的字符串
    var emoji: String?
    
    /// true 是删除按钮，false是空白按钮
    var removeEmoticon = false
    /// 模型显示删除按钮和空白表情,true 是删除按钮, false 是空白按钮
    init(removeEmoticon: Bool) {
        self.removeEmoticon = removeEmoticon
        super.init()
    }
    
    /// 字典转模型
    init(id: String?, dict: [String: AnyObject]) {
        super.init()
        self.id = id
        // 使用KVC赋值
        setValuesForKeysWithDictionary(dict)
    }
    // 字典的key在模型中找不到对应的属性
    override func setValue(value: AnyObject?, forUndefinedKey key: String) {}
    // 对象打印方法
    override var description: String {
        return "\n\t\t表情模型:chs: \(chs), png: \(png), code: \(code)"
    }
}
